function fnMensajeProcesoInicio(msj) {
    var loading = document.getElementById('idLoading');
    var mensaje = document.getElementById('idMensaje');
    $(loading).show(); 
    mensaje.innerHTML = msj;
}

function fnMensajeProcesoTerminado(msj) {
    var loading = document.getElementById('idLoading');
    var mensaje = document.getElementById('idMensaje');   
    mensaje.innerHTML = msj;
    $(loading).fadeOut(1000);
}

function cantidadDias(fechaini,fechafin){
    CadenaFecha1 = fechafin;
    CadenaFecha2 = fechaini;
    //Obtiene los datos del formulario
    //Obtiene dia, mes y año
    var fecha1 = new fecha( CadenaFecha1 )
    var fecha2 = new fecha( CadenaFecha2 )
    //Obtiene objetos Date
    var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia )
    var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia )
    //Resta fechas y redondea
    var diferencia = miFecha1.getTime() - miFecha2.getTime()
    var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
    var x;
    var habil=dias;
    for(x=1;x<=dias; x++){
        dfecha = new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()+x));
        if(dfecha.getDay()==0||dfecha.getDay()==6){
            habil--;
        }
    }
    dias=habil;

    return dias;

}


function dias(fechaini,fechafin){

    CadenaFecha1 = fechafin;
    CadenaFecha2 = fechaini;
     // alert(CadenaFecha1 + " - " + CadenaFecha2);
    if (f_ComparaFecha(fechaini, fechafin)==-1){
            //alert("1");
        //Obtiene los datos del formulario
        //Obtiene dia, mes y año
        var fecha1 = new fecha( CadenaFecha1 )
        var fecha2 = new fecha( CadenaFecha2 )
        //Obtiene objetos Date
        var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia )
        var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia )
        //Resta fechas y redondea
        var diferencia = miFecha1.getTime() - miFecha2.getTime()
        var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
        var x;
        var habil=dias;

        for(x=0;x<=dias; x++){
            dfecha = new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()+x));
            if(dfecha.getDay()==0||dfecha.getDay()==6 || esFeriado(dfecha)){
                habil--;
            }
        }
        dias=habil;
        var dfechaInicial= new Date( miFecha1.getFullYear(), miFecha1.getMonth(),(miFecha1.getDate()));
        var dfechaFinal= new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()));
        
        if(dias+1<10){
            var d= dias+1;
            document.getElementById('txtDiasHabiles').value='0'+d;
        }else{
            document.getElementById('txtDiasHabiles').value=dias+1;
        }

    }else if (f_ComparaFecha(fechaini, fechafin)==0){
           // alert("2");
        var fechaIgual1 = new fecha( CadenaFecha1 )
        var fechaIgual2 = new fecha( CadenaFecha2 )
        var miFechaIgual1 = new Date( fechaIgual1.anio, fechaIgual1.mes-1, fechaIgual1.dia )
        var miFechaIgual2 = new Date( fechaIgual2.anio, fechaIgual2.mes-1, fechaIgual2.dia )

        dfechaInicial= new Date( miFechaIgual1.getFullYear(), miFechaIgual1.getMonth(),(miFechaIgual1.getDate()));
        dfechaFinal= new Date( miFechaIgual2.getFullYear(), miFechaIgual2.getMonth(),(miFechaIgual2.getDate()));

        if(((dfechaInicial.getDay()==0||dfechaInicial.getDay()==6)&& (dfechaFinal.getDay()==0||dfechaFinal.getDay()==6)) || ((esFeriado(dfechaInicial) && esFeriado(dfechaFinal)))){
            habil=0;
        }else{
            habil=1;
        }

        document.getElementById('txtDiasHabiles').value='0'+habil;

    }else{
       //alert("3");
       
        document.getElementById('fechaInicioVacaciones').value=fechaini;
        document.getElementById('fechaFinVacaciones').value=fechaini;
        
           
        fechaIgual1 = new fecha( fechaini )
        fechaIgual2 = new fecha( fechaini )
        miFechaIgual1 = new Date( fechaIgual1.anio, fechaIgual1.mes-1, fechaIgual1.dia )
        miFechaIgual2 = new Date( fechaIgual2.anio, fechaIgual2.mes-1, fechaIgual2.dia )

        dfechaInicial= new Date( miFechaIgual1.getFullYear(), miFechaIgual1.getMonth(),(miFechaIgual1.getDate()));
        dfechaFinal= new Date( miFechaIgual2.getFullYear(), miFechaIgual2.getMonth(),(miFechaIgual2.getDate()));
        //alert(dfechaInicial + " - " + dfechaFinal + " - " + dfechaFinal.getDay());
       
        if(((dfechaInicial.getDay()==0||dfechaInicial.getDay()==6)&& (dfechaFinal.getDay()==0||dfechaFinal.getDay()==6))|| ((esFeriado(dfechaInicial) && esFeriado(dfechaFinal)))){
            habil=0;
            //alert("0");
        }else{
            habil=1;
            //alert("1");
        }

        document.getElementById('txtDiasHabiles').value='0'+habil;
    }

}



function fecha(cadena) {

    //Separador para la introduccion de las fechas
    var separador = "/"

    //Separa por dia, mes y año
    if ( cadena.indexOf( separador ) != -1 ) {
        var posi1 = 0
        var posi2 = cadena.indexOf( separador, posi1 + 1 )
        var posi3 = cadena.indexOf( separador, posi2 + 1 )
        this.dia = cadena.substring( posi1, posi2 )
        this.mes = cadena.substring( posi2 + 1, posi3 )
        this.anio = cadena.substring( posi3 + 1, cadena.length )
    } else {
        this.dia = 0
        this.mes = 0
        this.anio = 0
    }
}


function comparaFecha(fecha, fecha2){
    var fechaIni=fecha.split('/');
    var fechaFin=fecha2.split('/');

    if(parseInt(fechaIni[2],10)>parseInt(fechaFin[2],10)){
        return(true);
    }else{
        if(parseInt(fechaIni[2],10)==parseInt(fechaFin[2],10)){
            if(parseInt(fechaIni[1],10)>parseInt(fechaFin[1],10)){
                return(true);
            }
            if(parseInt(fechaIni[1],10)==parseInt(fechaFin[1],10)){
                if(parseInt(fechaIni[0],10)>parseInt(fechaFin[0],10)){
                    return(true);
                }else{
                    return(false);
                }
            }else{
                return(false);
            }
        }else{
            return(false);
        }
    }

}

function esFeriado(parametroDate){
    var rows = document.getElementById('tblFeriados').tBodies[0].rows.length;
    var resul=false;
    if(rows>0){
        for(var i = 0; i < rows; i++ ){
            var feriado = new fecha(document.getElementById('tblFeriados').tBodies[0].rows[i].cells[0].innerHTML);
            var miFechaFeriado = new Date( feriado.anio, feriado.mes-1, feriado.dia )
                    //alert(parametroDate.getFullYear() + " - " + miFechaFeriado.getFullYear() + " - " + parametroDate.getMonth() + " - " + miFechaFeriado.getMonth() + " - " + parametroDate.getDate() + " - "+ miFechaFeriado.getDate());
            /////if ((parametroDate.getFullYear()==miFechaFeriado.getFullYear())&&(parametroDate.getMonth()==miFechaFeriado.getMonth()) && (parametroDate.getDate()==miFechaFeriado.getDate())){
            if ((parametroDate.getMonth()==miFechaFeriado.getMonth()) && (parametroDate.getDate()==miFechaFeriado.getDate())){    
                resul= true;
                    //alert("Entro: " + parametroDate.getFullYear() + " - " + miFechaFeriado.getFullYear() + " - " + parametroDate.getMonth() + " - " + miFechaFeriado.getMonth() + " - " + parametroDate.getDate() + " - "+ miFechaFeriado.getDate());
                break;
            }
        }
    }
    return resul;
}

function cargarDivisiones(url){
    $("#idSubDivision").html("");
    $("#idDivision").attr('disabled', false);

    $("#idSubDivision").append('<option selected="selected" value="">Elegir opci&oacute;n</option>');
    $("#idSubDivision").attr('disabled', true);

    if(form.idSociedad.value != ''){
        cargarCmbJson(url,
        {
            metodo: 'cargarDivisiones',
            idSociedad: $("#idSociedad").val()
        },
        'idDivision');
    }
}

function cargarDivisionesVacacionesPlanificadas(url){
    $("#idDivision").attr('disabled', false);

    if(form.idSociedad.value != ''){
        cargarCmbJson(url,
        {
            metodo: 'cargarDivisiones',
            idSociedad: $("#idSociedad").val()
        },
        'idDivision');
    }
}

function cargarSubDivisiones(url){
    $("#idSubDivision").attr('disabled', false);
    
    if(form.idDivision.value != ''){
        cargarCmbJson(url,
        {
            metodo: 'cargarSubDivisiones',
            idDivision: $("#idDivision").val()
        },
        'idSubDivision');
    }
}

function cargarSubDivisionesVacacionesPlanificadas(url){
    $("#idSubDivision").attr('disabled', false);
    
    if(form.idDivision.value != ''){
        cargarCmbJsonVacacionesPlanificadas(url,
        {
            metodo: 'cargarSubDivisionesVacacionesPlanificadas',
            idDivision: $("#idDivision").val(),
            esadmin: $("#esadmin").val(),
            subDivision: $("#subDivision").val()
        },
        'idSubDivision');
    }
}

function cargarCmbJson(url, data, cmb){
    $.ajax({
        url: url,type:'POST',dataType: 'json',
            async: false,
            data: data,
            success:
                function(responseText, statusText){
                    if(statusText == 'success'){
                        $("#"+cmb).html("");
                        $("#"+cmb).append('<option selected="selected" value="">Elegir opci&oacute;n</option>');
                        $.each(responseText.resultado, function(i,item){
                            $("#"+cmb).append('<option value="'+item.id+'">'+item.descripcion+'</option>');
                        });
                    }
                }
    });
}
 
function cargarCmbJsonVacacionesPlanificadas(url, data, cmb){
    $.ajax({
        url: url,type:'POST',dataType: 'json',
            async: false,
            data: data,
            success:
                function(responseText, statusText){
                    if(statusText == 'success'){
                        $("#"+cmb).html("");
                        $.each(responseText.resultado, function(i,item){
                            $("#"+cmb).append('<option value="'+item.id+'">'+item.descripcion+'</option>');
                        });
                    }
                }
    });
}

function diasReporte(fechaini,fechafin){

    CadenaFecha1 = fechafin;
    CadenaFecha2 = fechaini;

    if(CadenaFecha1 != "" && CadenaFecha2 != ""){
        if (f_ComparaFecha(fechaini, fechafin)==-1){
            //Obtiene los datos del formulario
            //Obtiene dia, mes y año
            var fecha1 = new fecha( CadenaFecha1 )
            var fecha2 = new fecha( CadenaFecha2 )
            //Obtiene objetos Date
            var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia )
            var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia )
            //Resta fechas y redondea
            var diferencia = miFecha1.getTime() - miFecha2.getTime()
            var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
            var x;
            var habil=dias;

            for(x=0;x<=dias; x++){
                dfecha = new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()+x));
                if(dfecha.getDay()==0||dfecha.getDay()==6 || esFeriado(dfecha)){
                    habil--;
                }


            }

            dias=habil;


            var dfechaInicial= new Date( miFecha1.getFullYear(), miFecha1.getMonth(),(miFecha1.getDate()));
            var dfechaFinal= new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()));

            if(dias+1<10){
                var d= dias+1;
                document.getElementById('txtDiasHabiles').value='0'+d;
            }else{
                document.getElementById('txtDiasHabiles').value=dias+1;
            }


        }else if (f_ComparaFecha(fechaini, fechafin)==0){
            var fechaIgual1 = new fecha( CadenaFecha1 )
            var fechaIgual2 = new fecha( CadenaFecha2 )
            var miFechaIgual1 = new Date( fechaIgual1.anio, fechaIgual1.mes-1, fechaIgual1.dia )
            var miFechaIgual2 = new Date( fechaIgual2.anio, fechaIgual2.mes-1, fechaIgual2.dia )

            dfechaInicial= new Date( miFechaIgual1.getFullYear(), miFechaIgual1.getMonth(),(miFechaIgual1.getDate()));
            dfechaFinal= new Date( miFechaIgual2.getFullYear(), miFechaIgual2.getMonth(),(miFechaIgual2.getDate()));

            if(((dfechaInicial.getDay()==0||dfechaInicial.getDay()==6)&& (dfechaFinal.getDay()==0||dfechaFinal.getDay()==6)) || ((esFeriado(dfechaInicial) && esFeriado(dfechaFinal)))){
                habil=0;
            }else{
                habil=1;
            }

            document.getElementById('txtDiasHabiles').value='0'+habil;

        }else{


            document.getElementById('fechaInicioVacaciones').value=fechaini;
            document.getElementById('fechaFinVacaciones').value=fechaini;


            fechaIgual1 = new fecha( fechaini )
            fechaIgual2 = new fecha( fechaini )
            miFechaIgual1 = new Date( fechaIgual1.anio, fechaIgual1.mes-1, fechaIgual1.dia )
            miFechaIgual2 = new Date( fechaIgual2.anio, fechaIgual2.mes-1, fechaIgual2.dia )

            dfechaInicial= new Date( miFechaIgual1.getFullYear(), miFechaIgual1.getMonth(),(miFechaIgual1.getDate()));
            dfechaFinal= new Date( miFechaIgual2.getFullYear(), miFechaIgual2.getMonth(),(miFechaIgual2.getDate()));


            if(((dfechaInicial.getDay()==0||dfechaInicial.getDay()==6)&& (dfechaFinal.getDay()==0||dfechaFinal.getDay()==6))|| ((esFeriado(dfechaInicial) && esFeriado(dfechaFinal)))){
                habil=0;
            }else{
                habil=1;
            }

            document.getElementById('txtDiasHabiles').value='0'+habil;
        }
    }
}